package cn.udrm.water.base.v1.baseconfig.service;

import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import cn.udrm.water.base.v1.baseconfig.dto.IndexMapConfigDto;
import cn.udrm.water.base.v1.baseconfig.dto.IndexMapConfigDtoMapper;
import cn.udrm.water.base.v1.baseconfig.entities.IndexMapConfig;
import cn.udrm.water.base.v1.baseconfig.repository.IndexMapConfigRepository;

@Service
@Transactional(readOnly=true)
public class IndexMapConfigService {
	@Autowired
	private IndexMapConfigRepository indexMapConfigRepository;
	@Autowired
	private IndexMapConfigDtoMapper indexMapConfigDtoMapper;
	
	public IndexMapConfigDto useConfigIsTrue() {
		List<IndexMapConfig> list = indexMapConfigRepository.findByUseConfig(true);
		if (list != null && list.size() != 0) {
			return indexMapConfigDtoMapper.from(list.get(0));
		}
		return null;
	}
	
	public List<IndexMapConfigDto> findAll() {
		List<IndexMapConfig> list = indexMapConfigRepository.findAll();
		return indexMapConfigDtoMapper.from(list);
	}

	public IndexMapConfigDto getAllById(String id) {
		IndexMapConfig IndexMapConfig = indexMapConfigRepository.findAllById(id);
		IndexMapConfigDto IndexMapConfigDto = indexMapConfigDtoMapper.from(IndexMapConfig);
		return IndexMapConfigDto;
	}
	
	@Transactional(readOnly=false)
	public IndexMapConfigDto save(IndexMapConfigDto IndexMapConfigDto) {
		IndexMapConfig IndexMapConfig = indexMapConfigDtoMapper.fromIndexMapConfigDto(IndexMapConfigDto);
		IndexMapConfig.setId(null);
		IndexMapConfig.setCreateTime(new Date());
		IndexMapConfig = indexMapConfigRepository.saveAndFlush(IndexMapConfig);
		IndexMapConfigDto dto = indexMapConfigDtoMapper.from(IndexMapConfig);
		return dto;
	}
	@Transactional(readOnly=false)
	public IndexMapConfigDto update(IndexMapConfigDto IndexMapConfigDto) {
		IndexMapConfig IndexMapConfig = indexMapConfigDtoMapper.fromIndexMapConfigDto(IndexMapConfigDto);
		IndexMapConfig = indexMapConfigRepository.saveAndFlush(IndexMapConfig);
		IndexMapConfigDto dto = indexMapConfigDtoMapper.from(IndexMapConfig);
		return dto;
	}
	
	@Transactional(readOnly=false)
	public void deleteAllSelf(String[] ids) {
		if (ids == null || ids.length == 0) {
			return;
		}
		for (String id : ids) {
			indexMapConfigRepository.deleteById(id);
		}
	}
}
